为了账号安全,请及时绑定邮箱和手机立即绑定

Object-C学习索引

标签:
Java

持续更新中,敬请期待...

学而不思则罔,思而不学则殆

学是一部分,记是另外一个部分。下面总结一下快速记忆要点,当然前提是你要理解上面的文章,以下只是总结的记忆要点,不是所有知识点,只是一些长期学习中需要我们牢记或者容易忘记的一些点。

一、Object-C 对象、消息和类的定义

1、消息 [消息接收者 消息]
2、.h文件是类定义,@interface @end类的声明开始与结束,.m文件是类实现。@implementation @end结束类实现的开始与结束
3、.h文件定义对外公开,@property只能是interface关键字以内使用。
4、静态变量,无论init多少个实例对象,静态变量有且只有一个。

二、Object-C 对象的类型和动态绑定

1、动态绑定:开始执行的时候,消息才确定消息接收者类型,因为消息的定义可能在子类或者父类。
2、多态:统一消息,作用于不同的消息接收者,可以有不同的执行结果,即不同消息接收者可以有相同的方法。
3、nil :  alloc方法将数值初始0,对象和其它类型的指针会初始化为nil。为nil的对象发消息,写法有效,方法不会执行,有返回值时对象-nil、指针-NULL、数值类型-0。
4、id不是(NSobject *),id可以存任何对象。编译时不会类型检查,不能->调用
5、@private 私有,声明它的类可以访问,子类不能访问,@protected 受保护的,默认,声明它的类和子类可访问,@public 本类和其它类可以直接访问,@package 所在框架
6、instancetype 代表返回的是一个当前的类对象

三、Object-C ARC和弱引用

1、ARC只能管理OC的对象,不能管理通过malloc申请的内存。
2、对象命名是不能用方法族关键字,以免造成误释放
3、不要在dealloc中释放实例变量(但可以释放资源)
4、尽量保持对象之间程属性结构避免循环引用,请使用_week弱引用来避免循环引用

四、Object-C 属性声明和点语法

1、自己定义property数形变量是一定要遵循oc命名规则。
2、 点语法可以快节操错 obj.age *= 2,这句话等于[boj setAge:[obj age] * 2];
3、属性声明时指定选项,这里只记ARC怎么用。
setter = setValue: //setValue可以取别的名字
getter = value //value可以取别的名字
原子性操作
nonatomic // 非原子性操作、非线性安全
读写属性:
readonly // 只读
readwrite / / 读写
赋值时的选项:
assin // 单纯赋值
retain // 进行保持操作
unsafe_unratained // 同assin,用于ARC
strong // 同retarin,用于ARC
week // 弱引用,用于ARC
copy // 复制对象

选项名称基础数据类型对象类型
未指定任何选项直接赋值警告
assign、unsafe_unratained直接赋值直接赋值
retain、strong出错赋值并对新值进行retain
week出错弱引用
copy出错赋值时建立传入值的一份副本

五、Object-C 类NSObject

1、NSObject根类方法提供了运行时系统的基本功能
2、isKindOfClass,Class也是一个对象
3、description打印可以修改,默认打印。

六、Object-C类别Category和扩展Extension

1、类别就是@interface 类名 (类别名),其它定义和使用和普通的类相同,类别可以单独定义新文件Student+Dance.h,Student+Dance.m也可以直接写到类里边,写到类里边时可以分开写也可以都写到.m文件里。
2、类别的.h中包含属性声明的情况下,实现部分需要手动定义访问方法别的类才能访问。自己都可以访问
3、类别声明一个类里边的私有方法,不写实现可以访问到这个私有方法,java里叫反射。oc叫类的前置声明
4、类扩展和类别的差别就是@interface 类名 (),括号里没有文本。

七、Object-C 协议Protocol

1、协议:可以单独写在.h里,也可以跟类的.h写在一起。事实上是一组方法的列表,使用协议可以使不同的类共享相同的消息。java中的接口和协议十分类似。使用方法:类的头文件类名的后面跟上协议名 <Speciality,otherProtocolName>
2、默认关键字required,它是必须实现的方法,optional可以不用实现
3、协议类型声明用来检测传入的对象是否遵循这个协议,否则编译发出警告
4、非正式协议:类别用法中的另一个叫法。我们可以将一组方法声明为NSObject的类别,这成为非正式协议。 即凡是NSObject或其子类Foundation框架中的类增加的类别,都是非正式协议。

八、Object-C 块对象

1、全局变量静态变量可获取修改,局部变量不能修改
2、__block变量在块对象作用域之间共享,块对象存在时__block对象存在。不存在时__block对象也不存在。



作者:Yink_Liu
链接:https://www.jianshu.com/p/ac75ee32b4bd


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消